博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WKWebView捕获HTML弹出的Alert和Confirm
阅读量:6606 次
发布时间:2019-06-24

本文共 3051 字,大约阅读时间需要 10 分钟。

之前用WebView装载一个网页时,弹出Alert时会显示网址,由于不想把网址暴露给用户这样显示就不是很友好了。UIWebView文档内没有找到可以捕获这类信息的API。GOOGLE了下发现了WKWebView组件,WKWebView是IOS8新推出的组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老旧笨重特别是内存占用量巨大的问题。以下为示例代码:

////  ViewController.swift//  KenWKWebView////  Created by KenNgai on 10/10/15.//  Copyright © 2015 IT. All rights reserved.//import UIKitimport WebKit //导入WebKit  WKWebView应该是用Webkit内核class ViewController: UIViewController,WKNavigationDelegate,WKUIDelegate {    var wkBrowser:WKWebView!        override func viewDidLoad() {        super.viewDidLoad()        self.wkBrowser = WKWebView(frame: self.view.frame)        //self.wkBrowser.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!))        let html = "DialogAlert
Logout" self.wkBrowser.loadHTMLString(html, baseURL: nil) self.wkBrowser.navigationDelegate = self self.wkBrowser.UIDelegate = self self.view.addSubview(wkBrowser) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }}//捕捉异常信息private typealias wkNavigationDelegate = ViewControllerextension wkNavigationDelegate { func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) { NSLog(error.debugDescription) } func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) { NSLog(error.debugDescription) }}private typealias wkUIDelegate = ViewControllerextension wkUIDelegate { //HTML页面Alert出内容 func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) { let ac = UIAlertController(title: webView.title, message: message, preferredStyle: UIAlertControllerStyle.Alert) ac.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: { (a) -> Void in completionHandler() })) self.presentViewController(ac, animated: true, completion: nil) } //HTML页面弹出Confirm时调用此方法 func webView(webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (Bool) -> Void) { let ac = UIAlertController(title: webView.title, message: message, preferredStyle: UIAlertControllerStyle.Alert) ac.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (ac) -> Void in completionHandler(true) //按确定的时候传true })) ac.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: { (ac) -> Void in completionHandler(false) //取消传false })) self.presentViewController(ac, animated: true, completion: nil) }}

 

如果你访问的页面的协议是https那么要在info.list同添加以下Key:

<key>NSAppTransportSecurity</key>

    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

具体可参考:https://lvwenhan.com/ios/460.html

 

转载地址:http://htbso.baihongyu.com/

你可能感兴趣的文章
如何删除在Excel中存在的无效的链接呢
查看>>
C#防止在画面上闪烁的Button
查看>>
(十)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训总结篇...
查看>>
走火入魔.NET从C/S单点登录到B/S系统的例子,SUID(System Unique Identification)
查看>>
答客户疑问 ASP.NET C#.NET 通用权限管理系统组件源码的 B/S C/S 这里有什么区别?...
查看>>
lol win8
查看>>
使用命令安装Google
查看>>
IOS 字符串的Format可以对数值四舍五入
查看>>
jQuery简单手风琴效果(Accordion)学习总结
查看>>
PHP AES256加密算法
查看>>
thinkphp-条件判断-if标签2
查看>>
SQL-23 对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列...
查看>>
VMware ESX虚拟机中提示IP地址已经分配给其他网卡
查看>>
负载均衡集群LVS实战篇
查看>>
老吴聊IT申请入驻搜狐公众平台,特此声明
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Linux常用shell脚本
查看>>
32/64位Win7_2017.09通用多合一安装版/Ghost版
查看>>